<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 1） map
      //   map()：接收一个函数，将原数组中的所有元素用这个函数处理后放入新数组返回。
      let arr = ["1", "20", "-5", "3"];
      console.log(arr);
      arr = arr.map((item) => parseInt(item)*2);
      console.log(arr);


    //   2） reduce  
    // 语法：
    // arr.reduce(callback,[initialValue])
    // reduce 为数组中的每一个元素依次执行回调函数，不包括数组中被删除或从未被赋值的元素，接受四个参数：初始值（或者上一次回调函数的返回值），当前元素值，当前索引，调用 reduce 的数组。
    // callback （执行数组中每个值的函数，包含四个参数）
    //     1、previousValue （上一次调用回调返回的值，或者是提供的初始值（initialValue））
    //     2、currentValue （数组中当前被处理的元素）
    //     3、index （当前元素在数组中的索引）
    //     4、array （调用 reduce 的数组）
    // initialValue （作为第一次调用 callback 的第一个参数。） 

    let result = arr.reduce((a, b, c, d)=>{
        console.log("上一次处理好后：" + a);
        console.log("当前正在处理：" + b);
        console.log("调用 reduce 的数组：" + d);

        return a + b;
    }, 100);

    console.log(result);


    </script>
  </body>
</html>
